Programmable elements are included in integrated circuits to store information to be retained even when power is not provided to the circuits. The programmable elements are non-volatile and may be programmed to store the desired information. Examples of non-volatile elements include fuses, antifuses, and non-volatile memory elements. Examples of the types of information programmed in the programmable elements of an integrated circuit include device information, device configuration information, device operation information, as well as other information.
In a particular example for memory circuits, programmable elements may be used to store memory address mapping information related to mapping memory addresses to redundant memory elements. Mapping memory address to redundant memory allows for “repairing” defective memory of a main memory array by accessing the redundant memory to which the memory address of the defective memory is mapped instead of the memory of the main memory array that is defective. A redundant memory element typically has a respective associated set of programmable elements that are used to store memory address information when the redundant memory element is used, and a respective set of latches into which a programmed memory address is latched for operation. Thus, when the respective associated set of programmable elements is enabled and programmed with a memory address, the redundant memory element is accessed when a memory access operation is requested for that memory address. However, if a redundant memory element is not used, the respective associated set of programmable elements remains unprogrammed.
As the capacity of memory circuits has increased, the number of redundant memory elements has increased as well. Along with the additional redundant memory elements, a corresponding number of sets of programmable elements and sets of latches have been added. The additional redundant memory elements and respective sets of associated programmable elements and sets of latches result in larger integrated circuit area and increased manufacturing complexity. Often much of the redundant memory elements are not used because there are fewer defective memory locations than available redundant memory elements. The unprogrammed sets of programmable elements and unused redundant memory in effect represent wasted space. The amount of redundant memory elements and respective associated sets of programmable elements could be reduced to address the issue, however, it is desirable to maintain the number of redundant memory elements because the number of defective memory that will be in need of repair is unpredictable.